﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bxas.Utility.StringOperations
{
    public class CurrencyConvertorTR
    {
        private string[] yuzler = new string[10];
        private string[] onlar = new string[10];
        private string[] birler = new string[10];
        private string[] hane = new string[5];
        private string[] rakam = new string[5];

        // arrayları tanımlıyoruz
        public void SayiOkuma()
        {
            // içlerini dolduruyoruz
            yuzler.SetValue("dokuzyüz", 9);
            yuzler.SetValue("sekizyüz", 8);
            yuzler.SetValue("yediyüz", 7);
            yuzler.SetValue("altıyüz", 6);
            yuzler.SetValue("beşyüz", 5);
            yuzler.SetValue("dörtyüz", 4);
            yuzler.SetValue("üçyüz", 3);
            yuzler.SetValue("ikiyüz", 2);
            yuzler.SetValue("yüz", 1);
            yuzler.SetValue("", 0);

            onlar.SetValue("doksan", 9);
            onlar.SetValue("seksen", 8);
            onlar.SetValue("yetmiş", 7);
            onlar.SetValue("altmış", 6);
            onlar.SetValue("elli", 5);
            onlar.SetValue("kırk", 4);
            onlar.SetValue("otuz", 3);
            onlar.SetValue("yirmi", 2);
            onlar.SetValue("on", 1);
            onlar.SetValue("", 0);
            birler.SetValue("dokuz", 9);
            birler.SetValue("sekiz", 8);
            birler.SetValue("yedi", 7);
            birler.SetValue("altı", 6);
            birler.SetValue("beş", 5);
            birler.SetValue("dört", 4);
            birler.SetValue("üç", 3);
            birler.SetValue("iki", 2);
            birler.SetValue("bir", 1);
            birler.SetValue("", 0);

            hane.SetValue("", 0);
            hane.SetValue("", 1);
            hane.SetValue("", 2);
            hane.SetValue("", 3);
            hane.SetValue("", 4);
            /*  ilk olarak bu arrayın elemanlarını boş olarak ayarlıyoruz eğer küme elemanları 
            000 değilse trilyon,milyar,milyon bin değerleri ile dolduruyoruz
            */
        }


        public string oku(string sayi)
        {
            int uzunluk = sayi.Length;
            if(uzunluk > 15)
                return "Hata girilen değerin uzunluğu en fazla 15 olmalı";
            // uzunluk 15 karakterden fazla olmamalı. si
            try
            {
                long k = Convert.ToInt64(sayi);
            }
            catch(Exception ex)
            {
                return ex.Message.ToString();
            }


            sayi = "000000000000000" + sayi;
            sayi = sayi.Substring(uzunluk, 15);
            rakam.SetValue(sayi.Substring(0, 3), 0);
            rakam.SetValue(sayi.Substring(3, 3), 1);
            rakam.SetValue(sayi.Substring(6, 3), 2);
            rakam.SetValue(sayi.Substring(9, 3), 3);
            rakam.SetValue(sayi.Substring(12, 3), 4);
            if(rakam[0].ToString() != "000")
                hane.SetValue("trilyon ", 0);
            if(rakam[1].ToString() != "000")
                hane.SetValue("milyar ", 1);
            if(rakam[2].ToString() != "000")
                hane.SetValue("milyon ", 2);
            if(rakam[3].ToString() != "000")
                hane.SetValue("bin ", 3);
            string sonuc = "";
            for(int i = 0; i < 5; i++)
            {

                sonuc = sonuc + yuzler[Convert.ToInt16(rakam[i][0].ToString())] +
                birsorunu(onlar[Convert.ToInt16(rakam[i][1].ToString())] + birler[Convert.ToInt16(rakam[i][2].ToString())] + hane[i]);

            }
            return sonuc;

        }

        private string birsorunu(string sorun)
        {
            string cozum = "";
            if(sorun == "birbin ")
                cozum = "bin ";
            else
                cozum = sorun;
            return cozum;
        }
    }
}
